home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_08_02
/
8n02031a
< prev
next >
Wrap
Text File
|
1990-02-28
|
2KB
|
104 lines
LISTING 4
#include <stdio.h>
#include <stat.h>
#include <string.h>
#include <fcntl.h>
#include <Mrm/MrmAppl.h>
extern char *malloc();
extern void set_window_title();
#define MAX_FILEN_LEN 128
char filename[MAX_FILEN_LEN];
Widget textwidget;
void
create_text_widget(w, client_data, call_data)
Widget w;
caddr_t client_data;
caddr_t call_data;
{
textwidget = w;
}
void
load_file(w, client_data, call_data)
Widget w;
caddr_t client_data;
XmFileSelectionBoxCallbackStruct *call_data;
{
FILE *fp;
char *charptr;
char *textbuf;
struct stat statbuf;
XmStringGetLtoR(call_data->value, XmSTRING_DEFAULT_CHARSET, &charptr);
XtDestroyWidget(w);
strcpy(filename, charptr);
fp = fopen(filename, "r");
fstat(fileno(fp), &statbuf);
textbuf = malloc(statbuf.st_size);
fread(textbuf, statbuf.st_size, 1, fp);
XmTextSetString(textwidget, textbuf);
free(textbuf);
fclose(fp);
set_window_title(filename);
}
void
save_file(w, client_data, call_data)
Widget w;
caddr_t client_data;
XmFileSelectionBoxCallbackStruct *call_data;
{
FILE *fp;
char *textbuf;
textbuf = XmTextGetString(textwidget);
fp = fopen(filename, "w");
fwrite(textbuf, strlen(textbuf), 1, fp);
fclose(fp);
XtFree(textbuf);
}
void
saveas_file(w, client_data, call_data)
Widget w;
caddr_t client_data;
XmSelectionBoxCallbackStruct *call_data;
{
FILE *fp;
char *textbuf;
char *charptr;
textbuf = XmTextGetString(textwidget);
XmStringGetLtoR(call_data->value, XmSTRING_DEFAULT_CHARSET, &charptr);
strcpy(filename, charptr);
fp = fopen(filename, "w");
fwrite(textbuf, strlen(textbuf), 1, fp);
fclose(fp);
XtFree(textbuf);
set_window_title(filename);
}
void
new_buffer(w, client_data, call_data)
Widget w;
caddr_t client_data;
caddr_t call_data;
{
strcpy(filename, "");
XmTextSetString(textwidget, "");
set_window_title("Untitled");
}
void
exit_editor(w, client_data, call_data)
Widget w;
caddr_t client_data;
caddr_t call_data;
{
exit(0);
}